package com.java.simple.study.jvm.memstruct.methodarea;

/**
 * @author zhoujunlin
 * @date 2021/12/12
 * @desc javap -v 查看字节码信息
 * StringTable["a", "b", "ab"]  hashtable结构 不能扩容
 **/
public class Demo3_2_1 {
    /**
     * 常量池的信息会被加载到运行时常量池中 此时a b ab均是常量池的符号 并没有变为Java字符串对象
     * 具体成为对象是在被调用是加载的（懒加载） 如下：
     * ldc           #2                  // String a
     * ldc           #3                  // String b
     * ldc           #4                  // String ab
     *
     * @param args
     */
    public static void main(String[] args) {
        String s1 = "a";
        String s2 = "b";
        //ldc           #4
        String s3 = "ab";
        // new StringBuilder().append("a").append("b").toString() -> new String("ab") -> astrore
        String s4 = s1 + s2;
        //ldc           #4
        String s5 = "a" + "b"; // javac编译期间的优化 结果已经在编译期间确定为ab
        System.out.println(s3 == s4); // false
        System.out.println(s3 == s5); // true
    }
}
